#ifndef __THREAD_POOL_HH__
#define __THREAD_POOL_HH__

#include "task_queue.hh"
#include <iostream>
#include <vector>
#include <thread>

using std::vector;
using std::thread;


class Thread_pool
{
public:
    Thread_pool(size_t queueSize, size_t threadNum);
    ~Thread_pool();
    void start();
    void stop();
    void addTask(Task* task);
    void doTask();
    Task* getTask();
private:
    size_t _queueSize;  // 任务队列大小
    TaskQueue _taskQueue;   // 任务队列
    size_t _threadNum;  // 线程数量
    vector<thread> _threads;    // 线程数组
    bool _isExit;   // 是否退出
};


#endif